package cn.cdeden.sys.factory;

import cn.cdeden.sys.domain.SysParametersConfig;
import cn.cdeden.sys.domain.dto.SysParametersConfigDto;
import cn.cdeden.sys.enums.SysConfigDefaultEnums;
import cn.cdeden.sys.enums.SysParametersConfigEnums;
import cn.cdeden.sys.service.SysParametersQueryConfigService;
import cn.cdeden.sys.utils.domain.UserLoginInfo;
import com.alibaba.fastjson.JSONArray;
//import com.cdyd.ecm.sys.domain.SysParametersConfig;
//import com.cdyd.ecm.sys.domain.dto.SysParametersConfigDto;
//import com.cdyd.ecm.sys.enums.SysConfigDefaultEnums;
//import com.cdyd.ecm.sys.enums.SysParametersConfigEnums;
//import com.cdyd.ecm.sys.service.SysParametersQueryConfigService;
//import com.cdyd.ecm.sys.utils.domain.UserLoginInfo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.coyote.BadRequestException;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @ProjectName : ecm_svn
 * @Package : com.cdyd.ecm.sys.factory
 * @ClassName : FollowUpLoginWeChatConfig
 * @Author : Yu.
 * @Description : // TODO
 * @Date : 2024/4/23 16:24
 * @Version : 1.0
 */
@Slf4j
@RequiredArgsConstructor
@Component("sys_wx_login_status")
public class FollowUpLoginWeChatConfig implements FollowUpMethod {

    private final SysParametersQueryConfigService sysConfigService;



    private final static String LoginWay = SysConfigDefaultEnums.LoginWay.getConfigCode();
    private final static String login = SysParametersConfigEnums.SYS_LOGIN_CONFIG.getCode();


//TODO 去掉了@Override

//    @Override
    public void sysConfigFollowUp(SysParametersConfigDto resources) throws BadRequestException {
        boolean b = Boolean.valueOf(resources.getConfigValue());


        //获取数据
        SysParametersConfigDto byCode = sysConfigService.getByCode(LoginWay, login,true);
        String configValue = byCode.getConfigValue();

        List<String> strings = JSONArray.parseArray(configValue, String.class);
        UserLoginInfo userLoginInfo = new UserLoginInfo(strings,null);
        userLoginInfo.setWxscan(b);
        //整理数据
        List<String> loginInfo = userLoginInfo.getEnabledLoginMethods();

        String jsonString = JSONArray.toJSONString(loginInfo); // 信息转换

        log.error(jsonString);
        //修改数据
        if (strings.size() != loginInfo.size()){
            sysConfigService.lambdaUpdate()
                    .eq(SysParametersConfig::getConfigCode, LoginWay)
                    .eq(SysParametersConfig::getConfigType, login)
                    .set(SysParametersConfig::getConfigValue, jsonString)
                    .update();
            //        删除缓存
            sysConfigService.deleteRedisInfo(LoginWay, login);
        }



    }
}
